/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import bean.Apoio;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author jorge
 */
public class ApoioDao implements Serializable {
    
    private Conexao conexao;
    private PreparedStatement ps;
    private boolean sucess = false;
    
    public ApoioDao()
    {
        this.conexao = new ConexaoPostgres();
        
    }
    
    public boolean cadastrarApoio(Apoio apoio){
        sucess = false;
        try {
            System.out.println("Cadastro Apoio: " + apoio.getNome());
            ps = conexao.getConnection().prepareStatement("INSERT INTO APOIO_FORMENTO(nome) VALUES (?) ");
            ps.setString(1, apoio.getNome());
            
            ps.executeUpdate();
            conexao.closeConnection();

            sucess = true;
            
        } catch (SQLException ex) {
            Logger.getLogger(Apoio.class.getName()).log(Level.SEVERE, null, ex);
            conexao.closeConnection();
            return sucess;
        }
        conexao.closeConnection();
        return sucess;
        
    }
    
    public boolean alterarApoio(Apoio apoio) {
        sucess = false;


        try {
            
            ps = conexao.getConnection().prepareStatement("UPDATE APOIO_FORMENTO SET nome = ? where id = ?");

            ps.setString(1, apoio.getNome());
            ps.setInt(2, apoio.getId());
            ps.executeUpdate();
            conexao.closeConnection();
            
            sucess = true;
                    
        } catch (SQLException ex) {
            Logger.getLogger(ApoioDao.class.getName()).log(Level.SEVERE, null, ex);
            conexao.closeConnection();
            return sucess;
        }

        
        conexao.closeConnection();

        return sucess;
    }
    
    public List<Apoio> listarApoio() {
        List<Apoio> apoios = new ArrayList<Apoio>();
        try {
            ps = conexao.getConnection().prepareStatement("SELECT * FROM APOIO_FORMENTO ORDER BY nome");
            ResultSet rs = ps.executeQuery();
            conexao.closeConnection();

            while (rs.next()) {
                
                Apoio ap = new Apoio();

                ap.setNome(rs.getString("nome"));
                ap.setId(rs.getInt("id"));

                apoios.add(ap);


            }
        } catch (SQLException ex) {
            Logger.getLogger(ApoioDao.class.getName()).log(Level.SEVERE, null, ex);
            conexao.closeConnection();
        }



        conexao.closeConnection();
        return apoios;

    }
    
    public Apoio consultarApoio(int id) {
        PreparedStatement ps = null;
        Apoio ap = null;
        try {
            ap = new Apoio();
            ps = conexao.getConnection().prepareStatement("Select * from APOIO_FORMENTO where id = ?; ");
            ps.setInt(1, id);
            ResultSet rs = ps.executeQuery();
            conexao.closeConnection();
            if (rs.next()) {

                ap.setNome(rs.getString("nome"));
                ap.setId(id);


            }
        } catch (SQLException ex) {
            conexao.closeConnection();
            return ap;

        }
        conexao.closeConnection();
        return ap;
    }

    public boolean removerApoio(Apoio apoio) {
        sucess = false;
        try {

            ps = conexao.getConnection().prepareStatement(" DELETE FROM APOIO_FORMENTO WHERE id = ?");

            ps.setLong(1, (apoio.getId()));

            ps.executeUpdate();
            conexao.closeConnection();


            sucess = true;
        } catch (SQLException ex) {
            ex.printStackTrace();
            conexao.closeConnection();
            return sucess;
        }

        conexao.closeConnection();
        return sucess;
    }
    
    
    
}
